세션 기반 인증
- HTTP 요청의 상태 비저장 특성을 극복하기 위해 세션이나 토큰을 사용할 수 있다.
✏️ 인증
유저가 누구인지 확인하는 절차, 회원가입하고 로그인 하는 것.
✏️ 인가
유저에 대한 권한을 허락하는 것.
세션 기반 인증
사용자의 인증 정보가 서버의 세션 저장소에 저장되는 방식
🧑🏻💻 동작 과정
유저가 로그인을 하면 서버 메모리 상에 세션이 저장된다.(세션은 일반적으로 고유한 Session Id와 함께 관련 데이터를 포함한다.)
클라이언트의 브라우저에 쿠키로 Session Id가 저장된다.
쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 Request에 Session Id를 쿠키에 담아 전송한다.
서버는 클라이언트가 보낸 Session Id와 서버 메모리를 관리하고 있는 Session Id를 비교해서 일치하면 인가(Authorization)를 수행한다.
🧑🏻💻 장단점
✅ 장점
- 서버에 저장하기 때문에 관리가 효율적이다.
- 구현이 상대적으로 쉽다.
- 서버 측에서 세션 상태를 관리하므로 클라이언트에 민감한 정보를 저장하지 않아서 보안에 강하다.
✅ 단점
- 세션 기반 인증은 서버 측에서 세션 상태를 관리해야 하므로 서버 부하를 유발할 수 있다.
- 사용자가 많아지는 경우 로드 밸런싱을 사용한 서버 확장을 이용해야 하는데 이 때 세션의 관리가 어려워진다.
✏️ 로드 밸런싱(Load Balancing)
서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어 처리하는 것
따라서 세션을 사용하게 될 경우 이러한 단점들로 인해 관리하는 것이 어렵기 때문에 고안된 것이 ‘토큰 방식’이다.